#ifndef BORROWER_H
#define BORROWER_H 
#include "Person.h"
#include <list>
#include <iostream>
class Person;
class Book_t;

class Borrower_t{
	friend std::ostream& operator<<(std::ostream& os, const Borrower_t& borrower);
public:
	Borrower_t(Person* p, unsigned long id);
	~Borrower_t();
	virtual std::string getName() const;
	unsigned long getID() const;
	virtual void writeBorrowed(const Book_t* book);
	virtual void removeBorrowed(const Book_t* book);
	virtual bool hasBooks() const;
private:
	const Person* person;
	unsigned long borrower_id;
	std::list<const Book_t*> borrowedBooks;	
	Borrower_t(const Borrower_t& borrower);
	Borrower_t& operator=(const Borrower_t& borrower);
};
#endif
